package com.example.demo;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class GeneratorCode {
    public static final String URL="jdbc:mysql://localhost:3306/xd?serverTimezone=GMT%2B8";
    public static final String USERNAME="root";
    public static final String PASSWORD="123456";

    public static void main(String[] args) {
        List<JSONObject> jsonObjectList = new ArrayList<>();
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("tableName", "ty_duishouhuming");//表名称
        jsonObject.put("moduleName", "duishouhuming"); //父包模块名
        jsonObjectList.add(jsonObject);

        doExc(jsonObjectList);

    }

    public static void doExc(List<JSONObject> jsonObjectList) {
        for (JSONObject jsonObject1 : jsonObjectList) {
            String tableName = jsonObject1.getStr("tableName");
            String moduleName = jsonObject1.getStr("moduleName");

            // 使用 FastAutoGenerator 快速配置代码生成器
            FastAutoGenerator.create(URL,
                            USERNAME,
                            PASSWORD)
                    .globalConfig(builder -> {
                        builder.author("caiwenhong") // 设置作者
                                .outputDir("src/main/java"); // 输出目录
                    })
                    .packageConfig(builder -> {
                        builder.parent("com.example.demo") // 设置父包名
                                .moduleName(moduleName) //设置父包模块名
                                .entity("entity") // 设置实体类包名
                                .mapper("mapper") // 设置 Mapper 接口包名
                                .service("service") // 设置 Service 接口包名
                                .serviceImpl("service.impl") // 设置 Service 实现类包名
                                //  .xml("mappers"); // 设置 Mapper XML 文件包名
                                .pathInfo(Collections.singletonMap(OutputFile.xml,".\\src\\main\\resources\\mappers"));
                    })
                    .strategyConfig(builder -> {
                        // builder.addInclude("table1", "table2") // 设置需要生成的表名
                        builder.addInclude(tableName) // 设置需要生成的表名
                                // .addTablePrefix("t_","tbl_") //删除前缀
                                .addTablePrefix("t_") //删除前缀
                                .entityBuilder()
                                .enableLombok() // 启用 Lombok
                                .enableTableFieldAnnotation() // 启用字段注解
                                .controllerBuilder()
                                .enableRestStyle(); // 启用 REST 风格
                    })
                    .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎
                    .execute(); // 执行生成

        }


    }


}
